package com.wms.mapper;

import com.wms.dto.*;
import com.wms.entity.AllocateIn;
import com.wms.entity.AllocateInDetail;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 调拨入库表数据库访问层; (b_allocatestorage)表数据库访问层
 * @author : 您的名字或参考 http://www.chiner.pro
 * @date : 2025-8-24
 */
@Mapper
public interface AllocateInMapper {

    /**
     * 条件查询调拨入库
     * @param allocateInDTO 查询条件
     * @return 调拨记录列表
     */
    List<AllocateInVo> queryPageAndCondition(AllocateInDTO allocateInDTO);

    /**
     * 新增调拨记录
     * @param allocateInUpVo 调拨信息
     * @return 影响行数
     */
    int insert(AllocateInUpVo allocateInUpVo);

    /**
     * 更新调拨记录
     * @param allocateInUpVo 调拨信息
     * @return 影响行数
     */
    int update(AllocateInUpVo allocateInUpVo);

    /**
     * 通过主键删除调拨记录 (物理删除)
     * @param id 调拨记录ID
     * @return 影响行数
     */
    int deleteById(int id);

    /**
     * 调布处理条件查询
     */
    List<CallProcessVO> queryProcessPageAndCondition(CallProcessDTO callProcessDTO);

    /**
     * 调拨审核完毕增加调拨单内容
     */
   int  insertAllocateIn(AllocateIn allocate);

    /**
     * 查询表中最大的调拨入库单号
     */
    String selectMaxCode();


    /**
     * 查询最大的TS调出单号
     * @return
     */
    String selectMaxTSCode();


    /**
     * 查询最大的批次号
     */

    String selectMaxPCCode();


    /**
     * 审核后插入详情
     */
   int insertAllocateInDetail(AllocateInDetail allocateInDetail);

    /**
     * 更新调拨处理记录
     * @return
     */
    int updateInStoreDetail(AllocateInDetailUpVo allocateInDetailUpVo);

    /**
     * 根据id查询要更新的调入操作
     */
    CallProcessVO selectInStoreDetail(int id);

    /**
     * 根据id查询出要操作的调拨入库和调拨明细的实体
     */
    AllocateIn getAllocateInWithDetailByDetailId(int detailId);

    /**
     * 查询所有的库区库存的商品
     */
    List<InTypeDTO>   selectAllocateType();
}